package br.com.cast.Prova_Wicket;


import java.util.Arrays;
import java.util.List;

import org.apache.wicket.feedback.ExactLevelFeedbackMessageFilter;
import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.RadioChoice;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.validation.validator.StringValidator;

import br.com.cast.conexao.SelecaoDAO;
import br.com.cast.modelo.Grupos;
import br.com.cast.modelo.Selecao;


public class CadastrarSelecao extends WebPage {

	@SpringBean
	private SelecaoDAO selecaoDAO;
	
	private Form<Selecao> form;
	
	public CadastrarSelecao(){
		
		add(new FeedbackPanel("Erro", 
				new ExactLevelFeedbackMessageFilter(
						FeedbackMessage.ERROR)));
		
		add(new FeedbackPanel("Sucesso", 
				new ExactLevelFeedbackMessageFilter(
						FeedbackMessage.SUCCESS)));
		
		form = new Form<Selecao>("formulario"){
			@Override
			protected void onSubmit() {
				Selecao s = getModelObject();
				if(s.getId() > 0){
					selecaoDAO.alterar(s);
				}else{
					selecaoDAO.salvar(s);
				}
				
				success("Informação Cadastrada/Alterada com sucesso!");
			}
		};
		
		
		form.setDefaultModel(new CompoundPropertyModel<Selecao>(new Selecao()));
		
		TextField<String> nome = new TextField<>("nome");
		nome.setRequired(true);
		nome.add(new StringValidator(3, 50));
		nome.setLabel(new Model<>("Nome"));
		form.add(nome);
		
		TextField<Integer> quantidade_titulo = new TextField<>("quantidade_titulo");
		form.add(quantidade_titulo);
		
		List<Grupos> grupos = Arrays.asList(new Grupos(1,"Grupo A"), 
											new Grupos(2,"Grupo B"), 
											new Grupos(3,"Grupo C"),
											new Grupos(4,"Grupo D")
		);
		
		
		IChoiceRenderer<Grupos> render = new ChoiceRenderer<>("valorFormatado");
		
		RadioChoice<Grupos> radioGrupo = new RadioChoice<>("grupo", grupos, render); 
		
		radioGrupo.setSuffix(" ");
		radioGrupo.setRequired(true);
		radioGrupo.setLabel(new Model<>("Grupos"));
		form.add(radioGrupo);
		
		CheckBox is_cabeca_chave = new CheckBox("is_cabeca_chave");
//		is_cabeca_chave.add(new CabecaDeChaveUnicoValidator(form, selecaoDAO));
		form.add(is_cabeca_chave);
		
		add(form);
		
		add(new Link("voltar"){
			
			@Override
			public void onClick() {
				setResponsePage(ListarSelecao.class);	
			}
			
		});
	}
	
	public void atualizaModelo(Selecao selecao) {
		form.setDefaultModelObject(selecao);
	}
	
	
}
